package com.ant.business.system.controller;

import com.ant.business.system.entity.Unit;
import com.ant.business.system.service.UnitService;
import com.ant.common.result.ResponseResult;
import com.ant.common.utils.FastMap;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.Objects;

/**
 * 单位管理控制层
 *
 * @author
 * @description
 * @create 2021-03-22 14:25:56
 */
@RestController
@RequestMapping(value = "/unit")
@Slf4j
@Api(tags = "单位管理")
public class UnitController {

    private final UnitService unitService;

    public UnitController(UnitService unitService) {
        this.unitService = unitService;
    }

    /**
     * 单位管理分页查询列表
     *
     * @param page  页码
     * @param limit 单页条数
     * @return
     */
    @GetMapping(value = "/list", name = "单位管理分页查询列表")
    @ApiOperation("单位管理分页查询列表")
    public ResponseResult list(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int limit, @RequestParam(required = false) String jsonStr) {
        try {
            FastMap param = FastMap.fromObject(jsonStr);
            PageInfo<Unit> pages = unitService.getList(page, limit, param);
            log.info("单位管理分页查询列表成功");
            return ResponseResult.success("单位管理分页查询列表成功", pages.getList(), pages.getTotal());
        } catch (Exception e) {
            log.info("单位管理分页查询列表失败：" + e.getMessage());
            return ResponseResult.fail("单位管理分页查询列表失败：" + e.getMessage());
        }
    }

    /**
     * 修改单位管理（新增、修改）
     *
     * @param unit
     * @return
     */
    @PostMapping(value = "/edit", name = "修改单位管理")
    @ApiOperation("修改单位管理（新增、修改）")
    public ResponseResult edit(Unit unit) {
        try {
            if (Objects.isNull(unit.getUnitId()) || unit.getUnitId() <= 0) {
                //新增
                unitService.saveOne(unit);
                log.info("单位管理新增成功");
            } else {
                //编辑
                unitService.update(unit);
                log.info("单位管理修改成功");
            }
            return ResponseResult.success("单位管理编辑成功");
        } catch (Exception e) {
            log.info("单位管理编辑失败：" + e.getMessage());
            return ResponseResult.fail("单位管理编辑失败：" + e.getMessage());
        }
    }

    /**
     * 删除单位管理
     *
     * @param primaryKey
     * @return
     */
    @PostMapping(value = "/delete", name = "删除单位管理")
    @ApiOperation("删除单位管理")
    public ResponseResult delete(String primaryKey) {
        try {
            if (Objects.isNull(primaryKey) || primaryKey.length() == 0) {
                return ResponseResult.fail("没有找到单位管理编号");
            }
            unitService.delete(primaryKey);
            log.info("单位管理删除成功");
            return ResponseResult.success("单位管理删除成功");
        } catch (Exception e) {
            log.info("单位管理删除失败：" + e.getMessage());
            return ResponseResult.fail("单位管理删除失败：" + e.getMessage());
        }
    }
}